package com.example.demo.demos.util;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.util.StringUtils;

public class LogUtil {
    public static Logger p_logger = null;
    private static LogConfigBean p_logConfigBean = null;
    public static final String DEBUG = "debug";
    public static final String INFO = "info";
    public static final String WARN = "warn";
    public static final String ERROR = "error";

    public LogUtil() {
    }

    public static final void init() {
        p_logConfigBean = new LogConfigBean();
        p_logConfigBean.setType("logback");
        p_logConfigBean.setLevel("info");
        init(p_logConfigBean);
    }

    public static final void init(LogConfigBean logConfigBean) {
        p_logConfigBean = logConfigBean;
        p_setUniBean(p_logConfigBean);
        LogConfig.init(p_logConfigBean);
        p_logger = LoggerFactory.getLogger(LogUtil.class);
        String type = p_logConfigBean.getType();
        String level = p_logConfigBean.getLevel();
        print("LogUtil_init_1", "日志框架启动成功", type, level);
    }

    public static final void print(String location, Object... args) {
        String snow;
        StringBuilder stringBuilder;
        String msg;
//        if (Objects.isNull(args)) {
//            snow = TimerUtil.date2str("yyyy-MM-dd HH:mm:ss:SSS");
//            stringBuilder = new StringBuilder();
//            stringBuilder.append(location).append(", ").append(snow);
//            msg = stringBuilder.toString();
//            System.out.println(msg);
//        } else {
//            snow = TimerUtil.date2str("yyyy-MM-dd HH:mm:ss:SSS");
//            stringBuilder = new StringBuilder();
//            stringBuilder.append(location).append(", ").append(snow);
//            Object[] var4 = args;
//            int var5 = args.length;
//
//            for(int var6 = 0; var6 < var5; ++var6) {
//                Object arg = var4[var6];
//                if (arg == null) {
//                    stringBuilder.append(", ").append("null");
//                } else {
//                    String str = StringUtils.toStr(new Object[]{arg});
//                    stringBuilder.append(", ").append(str);
//                }
//            }
//
//            msg = stringBuilder.toString();
//            System.out.println(msg);
//        }
    }

    public static final void debug(String location, Object... args) {
        boolean enable = isEnable("debug");
//        if (enable) {
//            String snow;
//            StringBuilder stringBuilder;
//            String msg;
//            if (args != null && args.length > 0) {
//                snow = TimerUtil.date2str("yyyy-MM-dd HH:mm:ss:SSS");
//                stringBuilder = new StringBuilder();
//                stringBuilder.append(location).append(", ").append(snow);
//                Object[] var10 = args;
//                int var6 = args.length;
//
//                for(int var7 = 0; var7 < var6; ++var7) {
//                    Object arg = var10[var7];
//                    if (arg == null) {
//                        stringBuilder.append("\n").append("null");
//                    } else {
//                        String str = StringUtil.toStr(new Object[]{arg});
//                        stringBuilder.append("\n").append(str);
//                    }
//                }
//
//                stringBuilder.append("\n");
//                msg = stringBuilder.toString();
//                p_debug(msg);
//            } else {
//                snow = TimerUtil.date2str("yyyy-MM-dd HH:mm:ss:SSS");
//                stringBuilder = new StringBuilder();
//                stringBuilder.append(location).append(", ").append(snow).append("\n");
//                msg = stringBuilder.toString();
//                p_debug(msg);
//            }
//        }
    }

    public static final void info(String location, Object... args) {
        boolean enable = isEnable("info");
//        if (enable) {
//            String snow;
//            StringBuilder stringBuilder;
//            String msg;
//            if (args != null && args.length > 0) {
//                snow = TimerUtil.date2str("yyyy-MM-dd HH:mm:ss:SSS");
//                stringBuilder = new StringBuilder();
//                stringBuilder.append(location).append(", ").append(snow);
//                Object[] var10 = args;
//                int var6 = args.length;
//
//                for(int var7 = 0; var7 < var6; ++var7) {
//                    Object arg = var10[var7];
//                    if (arg == null) {
//                        stringBuilder.append("\n").append("null");
//                    } else {
//                        String str = StringUtil.toStr(new Object[]{arg});
//                        stringBuilder.append("\n").append(str);
//                    }
//                }
//
//                stringBuilder.append("\n");
//                msg = stringBuilder.toString();
//                p_info(msg);
//            } else {
//                snow = TimerUtil.date2str("yyyy-MM-dd HH:mm:ss:SSS");
//                stringBuilder = new StringBuilder();
//                stringBuilder.append(location).append(", ").append(snow).append("\n");
//                msg = stringBuilder.toString();
//                p_info(msg);
//            }
//        }
    }

    public static final void warn(String location, Object... args) {
        boolean enable = isEnable("warn");
//        if (enable) {
//            String snow;
//            StringBuilder stringBuilder;
//            String msg;
//            if (args != null && args.length > 0) {
//                snow = TimerUtil.date2str("yyyy-MM-dd HH:mm:ss:SSS");
//                stringBuilder = new StringBuilder();
//                stringBuilder.append(location).append(", ").append(snow);
//                Object[] var10 = args;
//                int var6 = args.length;
//
//                for(int var7 = 0; var7 < var6; ++var7) {
//                    Object arg = var10[var7];
//                    if (arg == null) {
//                        stringBuilder.append("\n").append("null");
//                    } else {
//                        String str = StringUtil.toStr(new Object[]{arg});
//                        stringBuilder.append("\n").append(str);
//                    }
//                }
//
//                stringBuilder.append("\n");
//                msg = stringBuilder.toString();
//                p_warn(msg);
//            } else {
//                snow = TimerUtil.date2str("yyyy-MM-dd HH:mm:ss:SSS");
//                stringBuilder = new StringBuilder();
//                stringBuilder.append(location).append(", ").append(snow).append("\n");
//                msg = stringBuilder.toString();
//                p_warn(msg);
//            }
//        }
    }

    public static final void error(String location, Throwable e, Object... args) {
        boolean enable = isEnable("error");
//        if (enable) {
//            if (e != null) {
//                String eStr = e.toString();
//                if (!StringUtil.isBlank(eStr)) {
//                    if (!StringUtil.containOf(eStr, "ClientAbortException")) {
//                        String snow;
//                        StringBuilder stringBuilder;
//                        String errorMsg;
//                        String msg;
//                        String clicklink;
//                        if (args != null && args.length > 0) {
//                            snow = TimerUtil.date2str("yyyy-MM-dd HH:mm:ss:SSS");
//                            stringBuilder = new StringBuilder();
//                            stringBuilder.append(location).append(", ").append(snow);
//                            Object[] var12 = args;
//                            int var13 = args.length;
//
//                            for(int var14 = 0; var14 < var13; ++var14) {
//                                Object arg = var12[var14];
//                                if (arg == null) {
//                                    stringBuilder.append("\n").append("null");
//                                } else {
//                                    String str = StringUtil.toStr(new Object[]{arg});
//                                    stringBuilder.append("\n").append(str);
//                                }
//                            }
//
//                            stringBuilder.append("\n");
//                            errorMsg = TraceUtil.getStackStr(e);
//                            stringBuilder.append("堆栈信息：\n").append(errorMsg).append("\n");
//                            msg = stringBuilder.toString();
//                            p_error(msg);
//                            if (p_logConfigBean != null) {
//                                clicklink = p_logConfigBean.getClicklink();
//                                if ("yes".equals(clicklink)) {
//                                    e.printStackTrace();
//                                }
//
//                            }
//                        } else {
//                            snow = TimerUtil.date2str("yyyy-MM-dd HH:mm:ss:SSS");
//                            stringBuilder = new StringBuilder();
//                            stringBuilder.append(location).append(", ").append(snow).append("\n");
//                            errorMsg = TraceUtil.getStackStr(e);
//                            stringBuilder.append("堆栈信息：\n").append(errorMsg).append("\n");
//                            msg = stringBuilder.toString();
//                            p_error(msg);
//                            if (p_logConfigBean != null) {
//                                clicklink = p_logConfigBean.getClicklink();
//                                if ("yes".equals(clicklink)) {
//                                    e.printStackTrace();
//                                }
//
//                            }
//                        }
//                    }
//                }
//            }
//        }
    }

    public static final void error(String location, Object... args) {
        p_error(location, true, args);
    }

    public static final void errorNo(String location, Object... args) {
        p_error(location, false, args);
    }

    private static final void p_error(String location, boolean showStackTrace, Object... args) {
//        boolean enable = isEnable("error");
//        if (enable) {
//            String snow;
//            StringBuilder stringBuilder;
//            String msg;
//            if (args != null && args.length > 0) {
//                snow = TimerUtil.date2str("yyyy-MM-dd HH:mm:ss:SSS");
//                stringBuilder = new StringBuilder();
//                stringBuilder.append(location).append(", ").append(snow);
//                Object[] var11 = args;
//                int var7 = args.length;
//
//                for(int var8 = 0; var8 < var7; ++var8) {
//                    Object arg = var11[var8];
//                    if (arg == null) {
//                        stringBuilder.append("\n").append("null");
//                    } else {
//                        String str = StringUtil.toStr(new Object[]{arg});
//                        stringBuilder.append("\n").append(str);
//                    }
//                }
//
//                if (showStackTrace) {
//                    msg = TraceUtil.getStackStr();
//                    stringBuilder.append("\n堆栈信息：").append("\n").append(msg);
//                }
//
//                stringBuilder.append("\n");
//                msg = stringBuilder.toString();
//                p_error(msg);
//            } else {
//                snow = TimerUtil.date2str("yyyy-MM-dd HH:mm:ss:SSS");
//                stringBuilder = new StringBuilder();
//                stringBuilder.append(location).append(", ").append(snow).append("\n");
//                if (showStackTrace) {
//                    msg = TraceUtil.getStackStr();
//                    stringBuilder.append("堆栈信息：\n").append(msg);
//                }
//
//                msg = stringBuilder.toString();
//                p_error(msg);
//            }
//        }
    }

    public static final boolean isEnable(String level) {
        level = StringUtils.trimWhitespace(level);
        level = org.apache.commons.lang3.StringUtils.toRootLowerCase(level);
        String currentLevel = "";
        if (p_logConfigBean != null) {
            currentLevel = p_logConfigBean.getLevel();
        } else {
            currentLevel = "info";
        }

        if ("debug".equals(currentLevel)) {
            return "debug".equals(level) || "info".equals(level) || "warn".equals(level) || "error".equals(level);
        } else if ("info".equals(currentLevel)) {
            return "info".equals(level) || "warn".equals(level) || "error".equals(level);
        } else if ("warn".equals(currentLevel)) {
            return "warn".equals(level) || "error".equals(level);
        } else if ("error".equals(currentLevel)) {
            return "error".equals(level);
        } else {
            return false;
        }
    }

    private static final void p_setUniBean(LogConfigBean p_logConfigBean) {
        String type = p_logConfigBean.getType();
        String type2 = p_setUniParam(type);
        p_logConfigBean.setType(type2);
        String env = p_logConfigBean.getEnv();
        String env2 = p_setUniParam(env);
        p_logConfigBean.setEnv(env2);
        String level = p_logConfigBean.getLevel();
        String level2 = p_setUniParam(level);
        p_logConfigBean.setLevel(level2);
        String clicklink = p_logConfigBean.getClicklink();
        String clicklink2 = p_setUniParam(clicklink);
        p_logConfigBean.setClicklink(clicklink2);
    }

    private static final String p_setUniParam(String param) {
//        param = StringUtil.getPureStr(param);
//        param = StringUtil.trim(param);
//        param = StringUtil.toLowerCase(param);
//        return param;
        return param;
    }

    private static final void p_debug(String msg) {
        if (p_logger == null) {
            System.out.println(msg);
        } else {
            p_logger.debug(msg);
        }
    }

    private static final void p_info(String msg) {
        if (p_logger == null) {
            System.out.println(msg);
        } else {
            p_logger.info(msg);
        }
    }

    private static final void p_warn(String msg) {
        if (p_logger == null) {
            System.out.println(msg);
        } else {
            p_logger.warn(msg);
        }
    }

    private static final void p_error(String msg) {
        if (p_logger == null) {
            System.out.println(msg);
        } else {
            p_logger.error(msg);
        }
    }
}
